import os
from dotenv import load_dotenv

# 仅在项目根目录查找 .env；config.py 位于项目根目录，因此直接拼接同级的 .env
ENV_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '.env'))

if os.path.exists(ENV_PATH):
    try:
        # 首选 UTF-8-SIG（可兼容 BOM），不报错则安静加载
        load_dotenv(dotenv_path=ENV_PATH, encoding='utf-8-sig')
    except Exception as e:
        try:
            # 再试纯 UTF-8
            load_dotenv(dotenv_path=ENV_PATH, encoding='utf-8')
        except Exception:
            print(f"[WARN] .env 编码异常，已忽略：{ENV_PATH}，错误：{e}")
else:
    # 未找到 .env，直接使用系统环境变量
    pass

class Config:
    """基础配置类"""
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production'
    JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY') or 'jwt-secret-key-change-in-production'
    JWT_ACCESS_TOKEN_EXPIRES = False  # 由代码控制过期时间
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///decoration_app.db'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    # OSS配置
    OSS_ENDPOINT = os.environ.get('OSS_ENDPOINT')
    OSS_ACCESS_KEY_ID = os.environ.get('OSS_ACCESS_KEY_ID')
    OSS_ACCESS_KEY_SECRET = os.environ.get('OSS_ACCESS_KEY_SECRET')
    OSS_BUCKET_NAME = os.environ.get('OSS_BUCKET_NAME')
    
    # Coze API配置
    COZE_PERSONAL_ACCESS_TOKEN = os.environ.get('COZE_PERSONAL_ACCESS_TOKEN')
    COZE_WORKFLOW_ID = os.environ.get('COZE_WORKFLOW_ID')
    # 对外可访问的基础URL（例如 http://localhost:5000 或 https://your-domain.com）
    PUBLIC_BASE_URL = os.environ.get('PUBLIC_BASE_URL')
    
    # 文件上传配置
    MAX_CONTENT_LENGTH = 16 * 1024 * 1024  # 16MB
    UPLOAD_FOLDER = 'uploads'
    ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'bmp'}

class DevelopmentConfig(Config):
    """开发环境配置"""
    DEBUG = True

class ProductionConfig(Config):
    """生产环境配置"""
    DEBUG = False

config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}
